জাভাস্ক্রিপ্টের ক্লাস ইনহেরিটেন্স (Inheritance) একটি শক্তিশালী বৈশিষ্ট্য যা একটি ক্লাসের প্রোপার্টি ও মেথড অন্য ক্লাসের মাধ্যমে উত্তরাধিকারসূত্রে পাওয়ার সুযোগ দেয়। এটি কোড পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি করে এবং একাধিক ক্লাসের মধ্যে সম্পর্ক গড়ে তোলে। extends
কীওয়ার্ড ব্যবহার করে একটি ক্লাস অন্য ক্লাস থেকে ইনহেরিট করতে পারে।
ইনহেরিটেন্স হল এমন একটি প্রক্রিয়া যেখানে একটি ক্লাস (প্যারেন্ট ক্লাস বা সুপারক্লাস) অন্য ক্লাস (চাইল্ড ক্লাস বা সাবক্লাস) কে তার প্রপার্টি এবং মেথড উত্তরাধিকারসূত্রে দেয়। চাইল্ড ক্লাস প্যারেন্ট ক্লাসের সব মেথড এবং প্রপার্টি পায়, তবে সেটি নিজের মতো নতুন মেথড বা প্রপার্টি যোগ করতে পারে এবং প্যারেন্ট ক্লাসের মেথডও ওভাররাইড করতে পারে।
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
এখানে, Animal
ক্লাস একটি সাধারণ প্যারেন্ট ক্লাস যা name
প্রপার্টি ধারণ করে এবং একটি speak
মেথড সংজ্ঞায়িত করে।
class Dog extends Animal {
constructor(name, breed) {
super(name); // প্যারেন্ট ক্লাসের কনস্ট্রাক্টর কল
this.breed = breed;
}
speak() {
console.log(`${this.name} barks.`);
}
}
const dog1 = new Dog("Buddy", "Golden Retriever");
dog1.speak(); // আউটপুট: Buddy barks.
এখানে, Dog
ক্লাস Animal
ক্লাস থেকে ইনহেরিট করছে। Dog
ক্লাস speak
মেথডকে ওভাররাইড করে, অর্থাৎ প্যারেন্ট ক্লাসের speak
মেথড পরিবর্তন করা হয়েছে। প্যারেন্ট ক্লাসের কনস্ট্রাক্টর super()
দ্বারা কল করা হয়েছে।
চাইল্ড ক্লাসের কনস্ট্রাক্টর মেথডে প্যারেন্ট ক্লাসের কনস্ট্রাক্টর কল করতে super()
ব্যবহৃত হয়। এটি প্যারেন্ট ক্লাসের প্রপার্টি বা ফাংশনকে চাইল্ড ক্লাসে ইনিশিয়ালাইজ করতে সাহায্য করে।
চাইল্ড ক্লাস প্যারেন্ট ক্লাসের মেথডকে ওভাররাইড (পরিবর্তন) করতে পারে, যাতে চাইল্ড ক্লাসে নতুন কার্যকারিতা যোগ করা যায়। উপরোক্ত উদাহরণে, Dog
ক্লাসের speak
মেথড প্যারেন্ট ক্লাসের speak
মেথডের কাজ পরিবর্তন করেছে।
যখন চাইল্ড ক্লাস প্যারেন্ট ক্লাসের একটি মেথডকে ওভাররাইড করে, তখন চাইল্ড ক্লাসের মেথড প্যারেন্ট ক্লাসের মেথডের কাজ সম্পূর্ণরূপে পরিবর্তন করতে পারে। তবে, যদি প্যারেন্ট ক্লাসের মেথডটি কিছু অতিরিক্ত কাজ করতে হয়, তবে super
ব্যবহার করে সেই মেথডটিকে কল করা সম্ভব।
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // প্যারেন্ট ক্লাসের কনস্ট্রাক্টর কল
this.breed = breed;
}
speak() {
super.speak(); // প্যারেন্ট ক্লাসের speak মেথড কল
console.log(`${this.name} barks.`);
}
}
const dog1 = new Dog("Buddy", "Labrador");
dog1.speak();
// আউটপুট:
// Buddy makes a sound.
// Buddy barks.
এখানে, Dog
ক্লাসের speak
মেথড প্যারেন্ট ক্লাসের speak
মেথড কল করার জন্য super.speak()
ব্যবহার করেছে, এর পরে নিজস্ব barks
মেসেজটি প্রদর্শন করছে।
জাভাস্ক্রিপ্টে সরাসরি একাধিক ইনহেরিটেন্স সমর্থিত নয়, অর্থাৎ এক ক্লাস শুধুমাত্র একটি ক্লাস থেকে ইনহেরিট করতে পারে। তবে, কম্পোজিশন এবং মিশ্রণ (Mixins) ব্যবহার করে একাধিক ফিচার বা বৈশিষ্ট্য সংগ্রহ করা যেতে পারে।
জাভাস্ক্রিপ্টের ক্লাস ইনহেরিটেন্স একটি শক্তিশালী বৈশিষ্ট্য যা ক্লাসগুলির মধ্যে সম্পর্ক তৈরি করে এবং কোড পুনরায় ব্যবহারযোগ্যতা ও রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি করে। ইনহেরিটেন্সের মাধ্যমে একটি চাইল্ড ক্লাস প্যারেন্ট ক্লাসের প্রপার্টি এবং মেথড উত্তরাধিকারসূত্রে পায় এবং সেগুলি ওভাররাইড করতে পারে। super()
ব্যবহার করে চাইল্ড ক্লাস প্যারেন্ট ক্লাসের মেথড এবং কনস্ট্রাক্টর কল করতে পারে। এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের অন্যতম প্রধান ধারণা এবং বড় প্রজেক্টগুলির কোড সংগঠিত ও সহজ করে তোলে।
common.read_more